From: Florian Müllner Date: Mon, 9 Jul 2018 10:19:00 +0000 (+0200) Subject: workspaceThumbnail: Don't keep stale clones in list X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~929^2~5^2~19 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=d9a1434ae978465a016ec987094131ef6d325eaf;p=gnome-shell.git workspaceThumbnail: Don't keep stale clones in list If a clone gets destroyed before the corresponding MetaWindow is removed from the workspace, we will still find it in the list of clones and try to destroy it again. Avoid the resulting warnings by updating the list of clones immediately when a clone is destroyed. https://bugzilla.gnome.org/show_bug.cgi?id=791233 --- diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js index db0677006..68922c943 100644 --- a/js/ui/workspaceThumbnail.js +++ b/js/ui/workspaceThumbnail.js @@ -372,16 +372,9 @@ var WorkspaceThumbnail = new Lang.Class({ }, _doRemoveWindow(metaWin) { - // find the position of the window in our list - let index = this._lookupIndex (metaWin); - - if (index == -1) - return; - - let clone = this._windows[index]; - this._windows.splice(index, 1); - - clone.destroy(); + let clone = this._removeWindowClone(metaWin); + if (clone) + clone.destroy(); }, _doAddWindow(metaWin) { @@ -533,6 +526,9 @@ var WorkspaceThumbnail = new Lang.Class({ clone.connect('drag-end', () => { Main.overview.endWindowDrag(clone.metaWindow); }); + clone.actor.connect('destroy', () => { + this._removeWindowClone(clone.metaWindow); + }); this._contents.add_actor(clone.actor); if (this._windows.length == 0) @@ -545,6 +541,16 @@ var WorkspaceThumbnail = new Lang.Class({ return clone; }, + _removeWindowClone(metaWin) { + // find the position of the window in our list + let index = this._lookupIndex (metaWin); + + if (index == -1) + return null; + + return this._windows.splice(index, 1).pop(); + }, + activate(time) { if (this.state > ThumbnailState.NORMAL) return;